requireJS(['constant', 'site', 'handlebars', 'public'], function (Constant, site, Handlebars, Public) {


    //全选功能
    $("input[name='ch_id_all']").on('click', function () {
        var _checked = $("input[name='ch_id']")
        if ($(this).prop('checked')) {
            _checked.prop('checked', true)
        }
        else {
            _checked.prop('checked', false)
        }
    })


    //注册handlebars
    Constant.initHandlebars(Handlebars);
    //表单验证同时阻止程序继续运行

    var url = {
        list: "manager/queryProductAll.do",
        company: "manager/getParentCompanyInfo.do",
        companyChild: "manager/getCompanyInfo.do",
        updateProduct: "manager/updateProductById.do",
        insertProduct: "manager/insertProduct.do",
        delProduct: "manager/deleteProduct.do",
        selectPageLogList: "manager/selectPageLogList.do",
        updateProductStateInId: "manager/updateProductStateInId.do",
        queryContract: "manager/queryContractPublic.do",

        //查询产品是否有关联流程
        queryWorkFlowByProdutId: "manager/queryWorkFlowByProdutId.do"
    }
    var frontData = {
        pageNum: 1
    }
    var attchData = {}
    var attch_listid = "";
    // var listid2="";
    // var sel_a= [];//保存选中的id，亦适用于分页
    var test1 = {};
    var product_id;

    function validate(formObj) {
        for (i in formObj) {
            if (formObj[i] == null || formObj[i] == "") {
                Constant.fn.Message('I', "请填写完整")
                return false
            } else {
                return true
            }
        }
    }

    function operation() {
        //操作栏
        $(".operations").on('change', function () {
            product_id = $(this).attr('product_id');
            var selected = $(this).find("option:selected");
            if (selected.val() == '1') {
                $('#product_edit_pop').toggle().attr('product_id', product_id);

                //编辑，将已保存的产品信息插入
                var v = products[product_id];
                $("#new_product").val(v.product_name);
                var name = v.d_name2 || v.d_name;
                $('#new_department option[name=' + name + ']').prop("selected", false).prop('selected', true);
                $('[attachid=图标]').html('<li href=' + v.path_img + '>   \n' +
                    '<img class="img_00" src=' + v.path_img + '>\n' +
                    '<i class="delSingleAttach iconfont icon-minus">\n' +
                    '</i>\n' +
                    '</li>')

                $('#product_edit_pop .winBox1').viewer('destroy').viewer();

                $('.delSingleAttach').unbind().on('click', function (e) {
                    e.stopPropagation();
                    e.preventDefault();
                    $(this).parents('li').remove();
                })

                //子级公司的渲染
                site.send({
                    url: url.companyChild,
                    data: {
                        id: $('#new_department option:selected').val()
                    },
                    callback: function (data) {
                        data = JSON.parse(data);
                        if (data.type == 1) {
                            var source = $("#company_child_list_tpl").html();
                            var template = Handlebars.compile(source);
                            var list = data.content;
                            var html = template(list);
                            $('#company_child_list').html(html);

                            $('#new_child_department option[name=' + v.d_name + ']').prop("selected", false).prop('selected', true);
                        } else {
                            $('#company_child_list').html('');
                        }
                    }
                })


                $('#new_contract option[value=' + v.controct_id + ']').prop("selected", false).prop('selected', true);
                $('#productType').val(v.product_type);
                //$('#')
            }
            if (selected.val() == '2') {
                var workflow_id = $(this).attr('workflow_id')
                var product_name = $(this).attr('product_name')
                pjaxGo("process/process.html?productId=" + product_id + "&workflowId=" + workflow_id + "&productName=" + product_name);
            }
            if (selected.val() == '3') {
                pjaxGo("OperaManager/product/common/product_form_design.html?productId=" + product_id);
            }
            if (selected.val() == '4') {

                /*//前端状态切换
                var change = $(this).find("option:selected");
                if(change.text() == "启用"){

                }*/


                var data = {
                    ids: product_id,
                    state: $(this).find("option:selected").data('state')
                }
                site.send({
                    url: url.updateProductStateInId,
                    data: data,
                    callback: function (data) {
                        data = JSON.parse(data);
                        if (data.type == 1) {
                            Constant.fn.Message("T", data.msg)
                            pjaxReload();
                        }
                        else {
                            Constant.fn.Message("F", data.msg)
                        }
                    }
                })
            }
            if (selected.val() == '6') {//产品删除
                $(".delete_winBox").show();
            }
            if (selected.val() == '5') {//添加附加
                site.send({
                    url: url.queryWorkFlowByProdutId,
                    data: {
                        product_id: product_id
                    },
                    callback: function (data) {
                        data = JSON.parse(data);
                        if (data.type == 1) {
                            $(".add_attach_winBox").toggle()
                            all_attach();
                            all_attach_node(selected.data("id"));
                            attchData.product_id = selected.data("id");
                        }
                        else {
                            Constant.fn.Message('I', data.msg);
                        }
                    }
                })

            }
            $(this).find("option:first").prop("selected", false).prop("selected", true);
        })
    }


    //确认删除
    $("#sureDelete").on('click',function(){
        site.send({
            url: url.delProduct,
            data: {
                ids: product_id
            },
            callback: function (data) {
                data = JSON.parse(data)
                if (data.type == 1) {
                    Constant.fn.Message("T", data.msg)
                    pjaxReload();
                } else {
                    Constant.fn.Message("F", data.msg)
                }
            },
            callError: function () {

            }
        })
    })

    //新建对象，存入产品列表数据
    var products = {};

    //默认查询第一页
    var pageNum = 1;
    //查询产品
    var queryData = function () {
        //查询产品所需字段
        var frontData = {
            pageNum: pageNum,
        };
        if ($("#start_time").val()) {
            frontData.start_time = $("#start_time").val();
        }
        if ($("#end_time").val()) {
            frontData.end_time = $("#end_time").val();
        }
        if ($('#product_name_key option:selected').val()) {
            frontData.type = $('#product_name_key option:selected').val()
        }
        if ($('#product_name').val()) {
            frontData.keyword = $('#product_name').val()
        }
        /*var product_name = $("#product_name_key option:selected").val();
        if (product_name == "product_name") {
            frontData[product_name] = $("#product_name").val();
        } else {
            frontData[product_name] = $("#product_name").val();
        }*/

        site.send({
            url: url.list,
            data: frontData,
            callback: function (data) {
                data = JSON.parse(data);
                $('.result').html(data.content.total)
                $('.product-page-container').createPager({
                    current: frontData.pageNum,
                    total: data.content.total,
                    pageSize: data.content.pageSize,
                    needInput: false,
                    backFn: function (current) {
                        pageNum = current;
                        queryData();
                    }
                })
                var source = $("#product_list_tpl").html();
                var template = Handlebars.compile(source);
                var list = data.content.list;
                for (var i = 0; i < list.length; i++) {
                    var v = list[i];
                    products[v.id] = v;
                }
                var html = template(list);
                $('#product_list').html(html);


                //复选框一个没选中则全选去除
                $.each($("input[name='ch_id']"), function (i, e) {
                    var flag = false;
                    $(e).on('click', function () {
                        var _checked = $("input[name='ch_id_all']")
                        var _checkedAll = $("input[name='ch_id']")
                        $.each(_checkedAll, function (ii, ee) {
                            if ($(ee).prop('checked')) {
                                flag = true
                            }
                            else {
                                flag = false
                                return false;
                            }
                        })
                        _checked.prop('checked', flag);
                    })
                })


                operation();
                Public.record('t_product');

            },
        })
    }
    //进入时搜索
    queryData();

    //查询所有公司
    function queryCompany() {
        site.send({
            url: url.company,
            //async:false
            callback: function (data) {
                data = JSON.parse(data)
                if (data.type == 1) {
                    var source = $("#company_list_tpl").html();
                    var template = Handlebars.compile(source);
                    var list = data.content;
                    var html = template(list);
                    $('#company_list').html(html);

                    $("#new_department").on('change', function () {
                        var parentDid = $(this).children('option:selected').val();
                        site.send({
                            url: url.companyChild,
                            data: {
                                id: parentDid
                            },
                            callback: function (data) {
                                data = JSON.parse(data);
                                if (data.type == 1) {
                                    var source = $("#company_child_list_tpl").html();
                                    var template = Handlebars.compile(source);
                                    var list = data.content;
                                    var html = template(list);
                                    $('#company_child_list').html(html);
                                } else {
                                    $('#company_child_list').html('');
                                }
                            }
                        })
                    })
                }
            }
        })
    }

    //进入时搜索
    queryCompany();

    /*function queryContract() {
        site.send({
            url: url.queryContract,
            callback: function (data) {
                data = JSON.parse(data)
                if (data.type == 1) {
                    var source = $("#contract_list_tpl").html();
                    var template = Handlebars.compile(source);
                    var list = data.content;
                    var html = template(list);
                    $('#contract_list').html(html);
                }
            }
        })
    }*/

    //进入时查询出合同
    //queryContract();

    //搜索
    $("#sousuo").on('click', function () {
        queryData();
    });

    /*$("#record_show").on('click',function(){
        $('#record_pop').toggle();
    })*/

    //新增产品与修改产品整合
    function addAndRevise(url, i) {
        /*var attachImg = new Array();

        $.each($('[attachid=图标] li'),function(i,e){
            attachImg.push($(e).attr('href'));
        })*/

        var data = {
            product_name: $("#new_product").val(),
            department_id: $("#new_child_department option:selected").val() || $("#new_department option:selected").val(),
            //controct_id: $("#new_contract option:selected").val(),
            path_img: $('[attachid=图标] li').attr('href'),
            productType: $("#productType").val()
        };

        if (!data.product_name) {
            Constant.fn.Message("I", "请输入产品名称")
            return;
        }

        if (!data.department_id) {
            Constant.fn.Message("I", "请选择公司")
            return;
        }

        if (!data.path_img) {
            Constant.fn.Message("I", "请上传图标")
            return;
        }

        if (i.parents('#product_edit_pop')) {
            data.id = i.parents('#product_edit_pop').attr('product_id')
        }
        if (validate(data)) {
            site.send({
                url: url,
                data: data,
                callback: function (data) {
                    data = JSON.parse(data)
                    if (data.type == 1) {
                        $('#product_edit_pop').toggle();
                        Constant.fn.Message("T", data.msg)
                        pjaxReload();
                    }
                    else {
                        Constant.fn.Message("F", data.msg)
                    }
                },
                callError: function () {
                    Constant.fn.Message("F", "请求数据错误")
                }
            })

        }
    }

    //修改产品信息

    $("#product_edit").on('click', function () {
        if ($(this).parents('#product_edit_pop').attr('product_id')) {
            addAndRevise(url.updateProduct, $(this))
        }
        else {
            addAndRevise(url.insertProduct, $(this))
        }
    })


    // 初始化表单
    $("#product_new").on('click', function () {
        $('#product_edit_pop').toggle();
        $("#new_product").val("");
        $('#new_contract option:first').prop('selected', false).prop('selected', true);
        $('#new_department option:first').prop('selected', false).prop('selected', true);
        $('#productType').val('');
        $('#gallery7').val('');
        //把二级公司下拉菜单干掉
        $('#company_child_list').html('');
        $('[attachid=图标]').html('');
    })

    $("#new_product").on('blur', function () {
        $("#productType").val(makePy($(this).val().toUpperCase()))
    })

    //批量操作

    var data = "";
    $("#bulk_operation").on('change', function () {
        product_id = '';
        var selected = $(this).find("option:selected");
        $(this).find("option:first").prop("selected", false).prop("selected", true);
        $("input[name='ch_id']:checked").each(function (index, item) {
            product_id = product_id + $(item).val() + ","
        })
        product_id = product_id.substring(0, product_id.length - 1)
        if (selected.val() == '删除') {
            //删除产品
            if (!product_id) {
                Constant.fn.Message('I', "未选择要删除的产品")
                return false;
            }
            $('.delete_winBox').show();
            /*site.send({
                url: url.delProduct,
                data: {
                    ids: product_id
                },
                callback: function (data) {
                    data = JSON.parse(data)
                    if (data.type == 1) {
                        Constant.fn.Message("T", data.msg)
                        pjaxReload();
                    } else {
                        Constant.fn.Message("F", data.msg)
                    }
                },
                callError: function () {

                }
            })*/
        }
        if (selected.val() == '启用') {
            //启用产品
            if (!product_id) {
                Constant.fn.Message('I', "未选择要启用的产品")
                return false;
            }
            site.send({
                url: url.updateProductStateInId,
                data: {
                    ids: product_id,
                    state: 1
                },
                callback: function (data) {
                    data = JSON.parse(data)
                    if (data.type == 1) {
                        Constant.fn.Message("T", data.msg)
                        pjaxReload();
                    } else {
                        Constant.fn.Message("F", data.msg)
                    }
                },
                callError: function () {

                }
            })
        }

        if (selected.val() == '停用') {
            //停用产品
            if (!product_id) {
                Constant.fn.Message('I', "未选择要停用的产品")
                return false;
            }
            site.send({
                url: url.updateProductStateInId,
                data: {
                    ids: product_id,
                    state: -1
                },
                callback: function (data) {
                    data = JSON.parse(data)
                    if (data.type == 1) {
                        Constant.fn.Message('T', data.msg)
                        pjaxReload();
                    } else {
                        Constant.fn.Message('F', data.msg)
                    }
                },
                callError: function () {

                }
            })
        }
    })
    $(".datepicker").datepicker({
        format: 'yyyy-mm-dd',
        autoclose: true
    })
    // 查询附件列表
    var attachListData = {
        pageNum: 1
    }

    function all_attach() {
        site.send({
            url: "manager/selectAttachmentTypeListall.do",
            async: false,
            data: attachListData,
            callback: function (data) {
                var list = JSON.parse(data)
                if (list.type == 1) {
                    var source = $("#attach_winBox_content_tpl").html();
                    var template = Handlebars.compile(source);
                    var html = template(list.content);
                    $('#attach_winBox_content').html(html);

                    // 分页
                    $('#attach-page-container').createPager({
                        current: attachListData.pageNum,
                        total: list.content.total,
                        pageSize: list.content.pageSize,
                        needInput: false,
                        backFn: function (current) {
                            attachListData.pageNum = current;
                            all_attach();
                            if ($(".node_select").val()) {
                                xuanzhong(attchData.product_id, $(".node_select").val());
                            }
                            $(".attach_checkbox").each(function (i) {
                                for (var k in test1) {
                                    if ($(this).val() == k) {
                                        $(this).prop('checked', true)
                                    }
                                }

                            })
                        }
                    })
                }
                else {
                    Constant.fn.Message('F', list.msg);
                }


                // 点击checkbox事件
                $(".attach_checkbox").click(function () {
                    var a = $(this).val();
                    if ($(this).is(":checked")) {
                        test1[a] = a;
                    } else {
                        delete test1[a];
                    }
                })
            }

        })
    }

    var test2;

    // 根据产品父id查节点
    function all_attach_node(obj) {
        site.send({
            url: "manager/selectProductNode.do",
            //async:false
            data: {
                pageNum: 1,
                product_id: obj
            },
            callback: function (data) {
                var list = JSON.parse(data)
                if (list.type == 1) {
                    var template = Handlebars.compile($("#selectProductAttachment_content2_tpl").html())
                    var html = template(list)
                    $("#selectProductAttachment_content2").html(html)

                    $(".node_select").on('change', function () {
                        if ($(this).val()) {
                            test1 = [];
                            attchData.node_id = $(this).val();
                            xuanzhong(obj, $(this).val());
                        }
                        //xuanzhong(obj, $(this).val());
                    })
                }
            }
        })
    }

    function xuanzhong(obj, nodeId) {
        var data = {
            product_id: obj,
            node_id: nodeId
        }
        if ($('.keyword').val()) {
            data.keyword = $('.keyword').val();
        }
        site.send({
            url: "manager/selectProducttattchm.do",
            //async:false
            data: data,
            callback: function (data) {
                var list = JSON.parse(data)
                test2 = [];
                for (var i = 0; i < list.content.length; i++) {
                    test2.push(list.content[i].attchment_type_id)
                }

                $("input[name='attch_id']").each(function (i) {
                    $(this).prop('checked', false);

                    // if (list.content[i]) {

                    // console.log(list.content[i].attchment_type_id)
                    // var attchment_type_id = list.content[i].attchment_type_id;

                    for (var x in test2) {
                        if ($(this).val() == test2[x]) {
                            $(this).prop('checked', true);
                            test1[$(this).val()] = $(this).val();
                        }
                    }
                    // }
                })
                $(".attach_checkbox").each(function (i) {
                    for (var k in test1) {
                        if ($(this).val() == k) {
                            $(this).prop('checked', true)
                        }
                    }
                })
            }

        })
    }

// 确定添加附件
//     insertProducttattchm
//     product_id
// node_id
// ids

    $(".footerBtn").click(function () {
        attch_listid = "";
        var count = Object.keys(test1).length
        if (count < 2) {
            for (var k in test1) {
                attch_listid = k;
            }
        } else {
            for (var k in test1) {
                attch_listid += (k + ",");
            }
            attch_listid = attch_listid.substring(0, attch_listid.length - 1);

        }
        attchData.ids = attch_listid;
        // 发送接口

        if ($(".node_select").val() != '-1') {
            site.send({
                url: "manager/insertProducttattchm.do",
                //async:false
                data: attchData,
                callback: function (data) {
                    var list = JSON.parse(data)
                    if (list.type == 1) {
                        Constant.fn.Message('T', list.msg)
                    } else {
                        Constant.fn.Message('F', list.msg)
                    }

                }
            })
        } else {
            Constant.fn.Message('F', '节点为空')

        }

    })
// 添加附件
    $("#add_attach").click(function () {
        $(".addwinBox").show();
        $(".add_attach_winBox").hide();
    })

    $(".add_attach_window_commit").click(function () {

        // 添加附件
        site.send({
            url: 'manager/insertAttachmentname.do',
            //async:false
            data: {
                name: $(".add_attach_name").val(),
                remarks: $(".add_attach_text").val()
            },
            callback: function (data) {
                var list = JSON.parse(data)
                if (list.type == 1) {
                    $(".addwinBox").hide();
                    pjaxReload();
                    Constant.fn.Message('T', list.msg);

                } else {
                    Constant.fn.Message('F', list.msg);
                }
            }

        })
    })

//图片上传代码
// WebUploader实例
    var uploader;
    var attachId, attachName;

    function OSS_IMAGE_INIT(order_id, node_id) {

        var objdata = {
            upfile_nametype: 'random_name',//local_name random_name  上传文件的文件名类型
            url: localStorage.getItem('host') + "oss/getSignature.do"
        };
        // 当domReady的时候开始初始化
        $(".viewPic").unbind().on('click', function () {

            if ($(this).siblings('.imgArr').find('li').length) {
                Constant.fn.Message('I', '已上传图标，请勿重复上传')
                return;
            }

            timeout : 30000,
                $.ajax({
                    type: "post",
                    url: objdata.url,
                    success: function (str) {
                        data = JSON.parse(str)
                        if (data.type > 0) {
                            try {
                                var re = data.content;
                                objdata.osssignature = {
                                    'key': re.dir,
                                    'policy': re.policy,
                                    'OSSAccessKeyId': re.accessId,
                                    'success_action_status': '200', //让服务端返回200,不然，默认会返回204
                                    'signature': re.signature,
                                    'callback': re.callback,
                                    'expire': re.expire,
                                    'host': re.host
                                };
                            } catch (e) {
                                alert("系统错误");
                            }

                        } else {
                            alert("结果为空");
                        }
                        $("#image_upload_pop").toggle();

                        //设置居中
                        centerPosition($("#image_upload_pop .edui-dialog-body").get(0));
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        // alert("ajax error");
                    },
                    complete: function (XMLHttpRequest, status) { //请求完成后最终执行参数
                        if (status == 'timeout') {
                            //alert('请求超时，请稍后再试！');
                        }
                    },
                    async: false
                });

            if (uploader) return;//界面已经存在，不去重新创建uploader了

            var $wrap = $('#uploader'),
                // 图片容器
                $queue = $('<ul class="filelist"></ul>').appendTo($wrap.find('.queueList')),

                // 状态栏，包括进度和控制按钮
                $statusBar = $wrap.find('.statusBar'),

                // 文件总体选择信息。
                $info = $statusBar.find('.info'),

                // 上传按钮
                $upload = $wrap.find('.uploadBtn'),

                // 没选择文件之前的内容。
                $placeHolder = $wrap.find('.placeholder'),

                $progress = $statusBar.find('.progress').hide(),

                // 添加的文件数量
                fileCount = 0,

                // 添加的文件总大小
                fileSize = 0,

                acceptExtensions = [".png",".tif",".TIF", ".pdf", ".doc", ".docx", ".jpg", ".jpeg", ".gif", ".bmp", ".xls", ".xlsx"].join('').replace(/\./g, ',').replace(/^[,]/, ''),

                // 优化retina, 在retina下这个值是2
                ratio = window.devicePixelRatio || 1,

                // 缩略图大小
                thumbnailWidth = 110 * ratio, thumbnailHeight = 110 * ratio,

                // 可能有pedding, ready, uploading, confirm, done.
                state = 'pedding',

                // 所有文件的进度信息，key为file id
                percentages = {},
                // 判断浏览器是否支持图片的base64
                isSupportBase64 = (function () {
                    var data = new Image();
                    var support = true;
                    data.onload = data.onerror = function () {
                        if (this.width != 1 || this.height != 1) {
                            support = false;
                        }
                    }
                    data.src = "";
                    return support;
                })(),

                // 检测是否已经安装flash，检测flash的版本
                flashVersion = (function () {
                    var version;

                    try {
                        version = navigator.plugins['Shockwave Flash'];
                        version = version.description;
                    } catch (ex) {
                        try {
                            version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
                        } catch (ex2) {
                            version = '0.0';
                        }
                    }
                    version = version.match(/\d+/g);
                    return parseFloat(version[0] + '.' + version[1], 10);
                })(),

                supportTransition = (function () {
                    var s = document.createElement('p').style,
                        r = 'transition' in s || 'WebkitTransition' in s || 'MozTransition' in s || 'msTransition' in s || 'OTransition' in s;
                    s = null;
                    return r;
                })(), _this = this;

            _this.imageList = [];
            if (!WebUploader.Uploader.support('flash') /* && WebUploader.browser.ie */) {

                // flash 安装了但是版本过低。
                if (flashVersion) {
                    (function (container) {
                        window['expressinstallcallback'] = function (state) {
                            switch (state) {
                                case 'Download.Cancelled':
                                    alert('您取消了更新！')
                                    break;

                                case 'Download.Failed':
                                    alert('安装失败')
                                    break;

                                default:
                                    alert('安装已成功，请刷新！');
                                    break;
                            }
                            delete window['expressinstallcallback'];
                        };

                        var swf = './expressInstall.swf';
                        // insert flash object
                        var html = '<object type="application/' + 'x-shockwave-flash" data="' + swf + '" ';

                        if (WebUploader.browser.ie) {
                            html += 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ';
                        }

                        html += 'width="100%" height="100%" style="outline:0">' + '<param name="movie" value="' + swf + '" />' + '<param name="wmode" value="transparent" />' + '<param name="allowscriptaccess" value="always" />' + '</object>';

                        container.html(html);

                    })($wrap);

                    // 压根就没有安装。
                } else {
                    $wrap.html('<a href="http://www.adobe.com/go/getflashplayer" target="_blank" border="0"><img alt="get flash player" src="http://www.adobe.com/macromedia/style_guide/images/160x41_Get_Flash_Player.jpg" /></a>');
                }

                return;
            } else if (!WebUploader.Uploader.support()) {
                alert('Web Uploader 不支持您的浏览器！');
                return;
            }
            // 实例化
            uploader = WebUploader.create({
                pick: {
                    id: '#filePicker',
                    label: '点击选择图片'
                },
                resize: false,
                duplicate: true,
                accept: {
                    title: 'Images',
                    extensions: acceptExtensions,
                    // mimeTypes: 'filed/!*' //wuzhifeng 修改上传文件类型 图片的话 是
                    // image
                    mimeTypes: 'image/!*'
                },
                formData: {
                    uid: 123
                },
                dnd: '#edui114_body',
                paste: '#uploader',
                swf: '/tbpt/plugin/ueditor/third-party/webuploader/Uploader.swf',
                chunked: false,
                compress: false,
                chunkSize: 512 * 1024,
                server: objdata.osssignature.host,///tbpt/plugin/ueditor/jsp/controller.jsp?action=uploadimage
                //http://oss.aliyuncs.com/ http://tbptfile.oss-cn-beijing.aliyuncs.com/
                // runtimeOrder: 'flash',
                // server:
                // 'http://liaoxuezhi.fe.baidu.com/webupload/fileupload.php',
                // server: 'http://www.2betop.net/fileupload.php',
                //

                // accept: {
                // title: 'Images',
                // extensions: 'gif,jpg,jpeg,bmp,png',
                // mimeTypes: 'image/!*'
                // },

                // 禁掉全局的拖拽功能。这样不会出现图片拖进页面的时候，把图片打开。
                disableGlobalDnd: false,
                auto: false,// {Boolean} [可选] [默认值：false] 设置为 true
                // 后，不需要手动调用上传，有文件选择即开始上传。
                fileNumLimit: 1,// 验证文件总数量, 超出则不允许加入队列。
                fileSizeLimit: 200 * 1024 * 1024, // 200 M
                fileSingleSizeLimit: 110 * 1024 * 1024 // 50 M
            });

            // 拖拽时不接受 js, txt 文件。
            uploader.on('dndAccept', function (items) {
                var denied = false, len = items.length, i = 0,
                    // 修改js类型
                    unAllowed = 'text/plain;application/javascript ';

                for (; i < len; i++) {
                    // 如果在列表里面
                    if (~unAllowed.indexOf(items[i].type)) {
                        denied = true;
                        break;
                    }
                }

                return !denied;
            });
            // 添加“添加文件”的按钮，
            uploader.addButton({
                id: '#filePicker2',
                label: '继续添加'
            });

            uploader.on('ready', function () {
                window.uploader = uploader;
            });

            //上传完成 服务器响应 不代表上传成功
            uploader.on('uploadSuccess', function (file, ret) {
                //console.log(fileCount);
                var $file = $('#' + file.id);
                if (ret._raw) {
                    _this.imageList.push({
                        succ: true
                    });
                    $file.append('<span class="success"></span>');
                    //图片
                    if (file.type == 'image/jpeg' || file.type == 'image/png' || file.type == 'image/tiff') {
                        var index = $file.index();
                        /*if ($file.index() == 0) {
                            $('#picStay').prepend('原图:<a sort="' + $file.index() + '" playHref="' + objdata.osssignature.host + "/" + file.path + '/tupian_compress" href="' + objdata.osssignature.host + "/" + file.path + '" target="_blank" >' + objdata.osssignature.host + "/" + file.path + '</a>');
                            $('#picStay').prepend('<img sort="' + $file.index() + '" src="' + objdata.osssignature.host + "/" + file.path + '?x-oss-process=image/resize,m_lfit,h_56,w_36" />');
                        } else {*/
                        var aSortArr = [];
                        if (!$('#picStay a').length) {
                            $('#picStay').prepend('原图:<a sort="' + index + '" playHref="' + objdata.osssignature.host + "/" + file.path + '/tupian_compress" href="' + objdata.osssignature.host + "/" + file.path + '" target="_blank" >' + objdata.osssignature.host + "/" + file.path + '</a>');
                        } else {
                            $.each($('#picStay a'), function (i, e) {
                                if ($(e).attr('sort') < index) {
                                    aSortArr.push($(e).attr('sort'))
                                }
                            })

                            if (aSortArr.length) {
                                $("#picStay a").eq(aSortArr.length - 1).after('原图:<a sort="' + index + '" playHref="' + objdata.osssignature.host + "/" + file.path + '/tupian_compress" href="' + objdata.osssignature.host + "/" + file.path + '" target="_blank" >' + objdata.osssignature.host + "/" + file.path + '</a>');
                            }
                            else {
                                $('#picStay').prepend('原图:<a sort="' + index + '" playHref="' + objdata.osssignature.host + "/" + file.path + '/tupian_compress" href="' + objdata.osssignature.host + "/" + file.path + '" target="_blank" >' + objdata.osssignature.host + "/" + file.path + '</a>');
                            }
                        }


                        var imgSortArr = [];
                        if (!$('#picStay img').length) {
                            $('#picStay').prepend('<img sort="' + index + '" src="' + objdata.osssignature.host + "/" + file.path + '?x-oss-process=image/resize,m_lfit,h_56,w_36" />');
                        } else {
                            $.each($('#picStay img'), function (i, e) {
                                if ($(e).attr('sort') < index) {
                                    imgSortArr.push($(e).attr('sort'))
                                }
                            })

                            if (imgSortArr.length) {
                                $("#picStay img").eq(imgSortArr.length - 1).after('<img sort="' + index + '" src="' + objdata.osssignature.host + "/" + file.path + '?x-oss-process=image/resize,m_lfit,h_56,w_36" />');
                            } else {
                                $('#picStay').prepend('<img sort="' + index + '" src="' + objdata.osssignature.host + "/" + file.path + '?x-oss-process=image/resize,m_lfit,h_56,w_36" />');
                            }
                        }
                        //$('#picStay').append('<img src="' + objdata.osssignature.host + "/" + file.path + '?x-oss-process=image/resize,m_fill,h_100,w_100" />');
                    }
                } else {
                    showError(file.statusText);
                    $file.find('.error').text("失败").show();
                    console.log("上传失败");
                    $('body').append("上传失败");
                }

            });

            uploader.on('uploadBeforeSend', function (obj, data, headers) {
                //TODO   如果同一个页面上传多次  需要处理签名逻辑   不用每次都签名
                //debugger
                //赋值参数
                data = $.extend(data, objdata.osssignature);
                headers['Access-Control-Allow-Origin'] = "*";

                //设置文件路径
                data.key = data.key + "/" + calculate_object_name(data.name, objdata.upfile_nametype);
                obj.filepath = data.key;
                obj.file.path = data.key;
            });

            //得到文件名 type local_name random_name
            function calculate_object_name(filename, type) {
                if (type && type == 'local_name') {
                    return "${filename}";
                } else {//随机生成文件名
                    var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
                    var maxPos = chars.length;
                    var random_string = '';
                    for (i = 0; i < 10; i++) {
                        random_string += chars.charAt(Math.floor(Math.random() * maxPos));
                    }
                    var pos = filename.lastIndexOf('.')
                    var suffix = ''
                    if (pos != -1) {
                        suffix = filename.substring(pos);
                    }
                    return random_string + new Date().getTime() + suffix;
                }
            }

            // 当有文件添加进来时执行，负责view的创建
            function addFile(file) {
                var $li = $('<li id="' + file.id + '">' + '<p class="title">' + file.name + '</p>' + '<p class="imgWrap"></p>' + '<p class="progress"><span></span></p>' + '</li>'),

                    $btns = $('<div class="file-panel">' + '<span class="cancel">删除</span>' + '<span class="rotateRight">向右旋转</span>' + '<span class="rotateLeft">向左旋转</span></div>').appendTo($li),
                    $prgress = $li.find('p.progress span'), $wrap = $li.find('p.imgWrap'),
                    $info = $('<p class="error"></p>'),

                    showError = function (code) {
                        switch (code) {
                            case 'exceed_size':
                                text = '文件大小超出';
                                break;

                            case 'interrupt':
                                text = '上传暂停';
                                break;

                            default:
                                text = '上传失败，请重试';
                                break;
                        }

                        $info.text(text).appendTo($li);
                    };

                if (file.getStatus() === 'invalid') {
                    showError(file.statusText);
                } else {
                    // @todo lazyload
                    $wrap.text('预览中');
                    uploader.makeThumb(file, function (error, src) {
                        var img;

                        if (error) {
                            $wrap.text('不能预览');
                            return;
                        }

                        if (isSupportBase64) {
                            img = $('<img src="' + src + '">');
                            $wrap.empty().append(img);
                        }
                    }, thumbnailWidth, thumbnailHeight);

                    percentages[file.id] = [file.size, 0];
                    file.rotation = 0;
                }


                file.on('statuschange', function (cur, prev) {
                    if (prev === 'progress') {
                        $prgress.hide().width(0);
                    } else if (prev === 'queued') {
                        $li.off('mouseenter mouseleave');
                        $btns.remove();
                    }
                    // 成功
                    if (cur === 'error' || cur === 'invalid') {
                        console.log(file.statusText);
                        showError(file.statusText);
                        percentages[file.id][1] = 1;
                    } else if (cur === 'interrupt') {
                        showError('interrupt');
                    } else if (cur === 'queued') {
                        percentages[file.id][1] = 0;
                    } else if (cur === 'progress') {
                        $info.remove();
                        $prgress.css('display', 'block');
                    } else if (cur === 'complete') {
                        //$li.append('<span class="success"></span>');
                    }

                    $li.removeClass('state-' + prev).addClass('state-' + cur);
                });
                uploader.on('uploadAccept', function (file, response) {
                    var hasError = (response['error'] !== undefined);
                    if (hasError) {
                        // 通过return false来告诉组件，此文件上传有错。
                        return false;
                    }
                    ;
                });
                uploader.on("uploadFinished", function () {
                    // uploader.reset();
                    // uploader;
                });

                $li.on('mouseenter', function () {
                    $btns.stop().animate({
                        height: 30
                    });
                });

                $li.on('mouseleave', function () {
                    $btns.stop().animate({
                        height: 0
                    });
                });

                $btns.on('click', 'span', function () {
                    var index = $(this).index(), deg;

                    switch (index) {
                        case 0:
                            uploader.removeFile(file);
                            return;

                        case 1:
                            file.rotation += 90;
                            break;

                        case 2:
                            file.rotation -= 90;
                            break;
                    }

                    if (supportTransition) {
                        deg = 'rotate(' + file.rotation + 'deg)';
                        $wrap.css({
                            '-webkit-transform': deg,
                            '-mos-transform': deg,
                            '-o-transform': deg,
                            'transform': deg
                        });
                    } else {
                        $wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (~~((file.rotation / 90) % 4 + 4) % 4) + ')');
                    }

                });

                $li.appendTo($queue);
            }

            // 负责view的销毁
            function removeFile(file) {
                var $li = $('#' + file.id);

                delete percentages[file.id];
                updateTotalProgress();
                $li.off().find('.file-panel').off().end().remove();
            }

            function updateTotalProgress() {
                var loaded = 0, total = 0, spans = $progress.children(), percent;

                $.each(percentages, function (k, v) {
                    total += v[0];
                    loaded += v[0] * v[1];
                });

                percent = total ? loaded / total : 0;

                spans.eq(0).text(Math.round(percent * 100) + '%');
                spans.eq(1).css('width', Math.round(percent * 100) + '%');
                updateStatus();
            }

            function updateStatus() {
                var text = '', stats;

                if (state === 'ready') {
                    text = '选中' + fileCount + '张图片，共' + WebUploader.formatSize(fileSize) + '。';
                } else if (state === 'confirm') {
                    stats = uploader.getStats();
                    if (stats.uploadFailNum) {
                        text = '已成功上传' + stats.successNum + '张照片，' + stats.uploadFailNum + '张照片上传失败，<a class="retry" href="#">重新上传</a>失败图片或<a class="ignore" href="#">忽略</a>'
                    }

                } else {
                    stats = uploader.getStats();
                    text = '共' + fileCount + '张（' + WebUploader.formatSize(fileSize) + '），已上传' + stats.successNum + '张';

                    if (stats.uploadFailNum) {
                        text += '，失败' + stats.uploadFailNum + '张';
                    }
                }

                $info.html(text);
            }

            function setState(val) {
                var file, stats;

                if (val === state) {
                    return;
                }

                $upload.removeClass('state-' + state);
                $upload.addClass('state-' + val);
                state = val;

                switch (state) {
                    case 'pedding':
                        $placeHolder.removeClass('element-invisible');
                        $queue.hide();
                        $statusBar.addClass('element-invisible');
                        uploader.refresh();
                        break;

                    case 'ready':
                        $placeHolder.addClass('element-invisible');
                        $('#filePicker2').removeClass('element-invisible');
                        $queue.show();
                        $statusBar.removeClass('element-invisible');
                        uploader.refresh();
                        $upload.text('开始上传').removeClass('disabled');
                        break;

                    case 'uploading':
                        $('#filePicker2').addClass('element-invisible');
                        $progress.show();
                        $upload.text('暂停上传');
                        break;

                    case 'paused':
                        $progress.show();
                        $upload.text('继续上传');
                        break;

                    case 'confirm':
                        $progress.hide();
                        $upload.text('开始上传').addClass('disabled');

                        stats = uploader.getStats();
                        if (stats.successNum && !stats.uploadFailNum) {
                            setState('finish');
                            return;
                        }
                        break;
                    case 'finish':
                        stats = uploader.getStats();
                        if (stats.successNum) {

                            // WuZhiFeng

                        } else {
                            // 没有成功的图片，重设
                            state = 'done';
                            location.reload();
                        }
                        $('#filePicker2').removeClass('element-invisible');
                        $upload.text('开始上传').removeClass('disabled');
                        break;
                }

                updateStatus();
            }

            uploader.onUploadProgress = function (file, percentage) {
                var $li = $('#' + file.id), $percent = $li.find('.progress span');

                $percent.css('width', percentage * 100 + '%');
                if ($.isEmptyObject(percentages)) {
                    return false;
                }
                percentages[file.id][1] = percentage;
                updateTotalProgress();
            };

            uploader.onFileQueued = function (file) {
                fileCount++;
                fileSize += file.size;

                if (fileCount === 1) {
                    $placeHolder.addClass('element-invisible');
                    $statusBar.show();
                }

                addFile(file);
                setState('ready');
                updateTotalProgress();
            };

            uploader.onFileDequeued = function (file) {
                fileCount--;
                fileSize -= file.size;

                if (!fileCount) {
                    setState('pedding');
                }

                removeFile(file);
                updateTotalProgress();
            };

            uploader.on('all', function (type) {
                var stats;
                switch (type) {
                    case 'uploadFinished':
                        setState('confirm');
                        break;

                    case 'startUpload':
                        setState('uploading');
                        break;

                    case 'stopUpload':
                        setState('paused');
                        break;

                }

            });

            uploader.onError = function (code) {
                if (code == 'Q_TYPE_DENIED') {
                    alert("不支持该文件类型，请选择图片类型文件");
                }
                if (code == 'Q_EXCEED_NUM_LIMIT') {
                    alert("只能上传单张图片");
                }
                // alert( 'Eroor: ' + code );
            };

            $upload.on('click', function () {
                if ($(this).hasClass('disabled')) {
                    return false;
                }

                if (state === 'ready') {
                    uploader.upload();
                } else if (state === 'paused') {
                    uploader.upload();
                } else if (state === 'uploading') {
                    uploader.stop();
                }
            });

            $info.on('click', '.retry', function () {
                uploader.retry();
            });

            $info.on('click', '.ignore', function () {
                alert('todo');
            });

            $upload.addClass('state-' + state);
            updateTotalProgress();
        });

    }

    var resetUploader = function () {
        if (uploader) {
            //重新设置页面
            for (var i = 0; i < uploader.getFiles().length; i++) {
                uploader.removeFile(uploader.getFiles()[i]);
            }
            uploader.reset();
        }
        $('.webuploader-element-invisible').val('');
    };

    $(".closed").unbind();
    $(".sure").unbind();

    $(".closed").on('click', function () {
        resetUploader();
        $('#image_upload_pop').toggle();
        $("#picStay").html("");
    })

    $(".sure").on('click', function () {

        var attachImg = [];
        var attachimg = [];
        var flag = false;
        /*var status = uploader.getStats();
        console.log(status);
        if (status.queueNum) {
            $(".statusBar .info").html("还有" + status.queueNum + "张图片未上传");
            return
        }*/
        $('#image_upload_pop').toggle();
        resetUploader();

        var img = $("#picStay a");

        if (img.length) {
            $.each(img, function (i, e) {
                attachImg.push(
                    {
                        href: $(e).attr('href'),
                        playHref: $(e).attr('playhref'),
                    }
                );
            })

            $.each(img, function (i, e) {
                attachimg.push($(e).attr('href'))
            })

            var sameAttach = $('[attachid=' + attachId + '] li');
            if (sameAttach.length) {
                $.each(sameAttach, function (i, e) {
                    attachimg.push($(e).attr('href'))
                })
            }
        }

        if (attachImg.length) {
            if ($('[attachId]').length) {
                $.each($('[attachId]'), function (i, e) {
                    /*if (attachImg[0].attachId == $(e).attr('attachId')) {*/
                    $.each(attachImg, function (ii, ee) {
                        $(e).append('<li href=\"' + ee.href + '\">   \n' +
                            '<img class="img_00" url="' + ee.href + '" src="' + ee.playHref + '">\n' +
                            '<i class="delSingleAttach iconfont icon-minus">\n' +
                            '</i>\n' +
                            '</li>')
                    })

                    $("#picStay").html("");
                    flag2 = false;
                    /*}*/
                })

                if (flag2) {
                    $('#image_list').append("<tr><td>" + data.content[0].attachName + "</td><td class=\"minImg\"><div id=\"gallery" + data.content[0].attachId + "\" attachName=\"" + data.content[0].attachName + "\" attachId=\"" + data.content[0].attachId + "\" allid=" + data.content[0].id + "></div></td><td><i class=\"delAttach iconfont icon-shanchu\"></i></td></tr>");
                    $.each(attachImg, function (ii, ee) {
                        var gallery = $('[attachId=' + ee.attachId + ']');
                        gallery.append('<li href=\"' + ee.href + '\">   \n' +
                            '<img class="img_00" url="' + ee.href + '" src="' + ee.playHref + '">\n' +
                            '<i class="delSingleAttach iconfont icon-minus">\n' +
                            '</i>\n' +
                            '</li>')
                    })

                    //imgList(data.content[0].attachId);
                    $("#picStay").html("");
                }
            }

            else {
                $('#image_list').append("<tr><td>" + data.content[0].attachName + "</td><td class=\"minImg\"><div id=\"gallery" + data.content[0].attachId + "\" attachName=\"" + data.content[0].attachName + "\" attachId=\"" + data.content[0].attachId + "\" allid=" + data.content[0].id + "></div></td><td><i class=\"delAttach iconfont icon-shanchu\"></i></td></tr>");
                $.each(attachImg, function (ii, ee) {
                    var gallery = $('[attachId=' + ee.attachId + ']');
                    gallery.append('<li href=\"' + ee.href + '\">   \n' +
                        '<img class="img_00" url="' + ee.href + '" src="' + ee.playHref + '">\n' +
                        '<i class="delSingleAttach iconfont icon-minus">\n' +
                        '</i>\n' +
                        '</li>')
                })

                //imgList(data.content[0].attachId);
                $("#picStay").html("");
            }
            $('#product_edit_pop .winBox1').viewer('destroy').viewer();
            Constant.fn.initScroll()
        }
        //删除单张图片
        $('.delSingleAttach').unbind().on('click', function (e) {
            e.stopPropagation();
            e.preventDefault();
            $(this).parents('li').remove();
            Constant.fn.initScroll()
        })

    })

    OSS_IMAGE_INIT()

    $('.attachSearch').on('click', function () {
        /*if ($('.node_select').val()) {
            xuanzhong(attchData.product_id, $(".node_select").val());
        }*/
        //else {
            attachListData = {
                pageNum: 1
            }
            if ($('.keyword').val()) {
                attachListData.keyword = $('.keyword').val();
            }
            //if()
            all_attach();
        //}
    })
})

/**
 * 从ueditor.all.js里面拷贝的拖拽方法
 */
var _onTitlebarMouseDown = function (event, el) {
    var uiUtils = baidu.editor.ui.uiUtils;
    var domUtils = baidu.editor.dom.domUtils;
    var rect;
    var me = this;
    var dialogId = el.getAttribute('id');//'image_upload_pop';

    var safeSetOffset = function (offset) {
        // var me = this;
        var el = getDom();
        var vpRect = uiUtils.getViewportRect();
        var rect = uiUtils.getClientRect(el);
        var left = offset.left;
        if (left + rect.width > vpRect.right) {
            left = vpRect.right - rect.width;
        }
        var top = offset.top;
        if (top + rect.height > vpRect.bottom) {
            top = vpRect.bottom - rect.height;
        }
        el.style.left = Math.max(left, 0) + 'px';
        el.style.top = Math.max(top, 0) + 'px';
    }
    var getDom = function (name) {
        if (!name) {
            return document.getElementById(dialogId);
        } else {
            return document.getElementById(dialogId + '_' + name);
        }
    };

    uiUtils.startDrag(event, {
        ondragstart: function () {
            rect = uiUtils.getClientRect(getDom());
            // me.getDom('contmask').style.visibility = 'visible';
            // me.dragMask.show(me.getDom().style.zIndex - 1);
        },
        ondragmove: function (x, y) {
            var left = rect.left + x;
            var top = rect.top + y;
            safeSetOffset({
                left: left,
                top: top
            });
        },
        ondragstop: function () {
            // me.getDom('contmask').style.visibility = 'hidden';
            // domUtils.removeClasses(me.getDom(), ['edui-state-centered']);
            // me.dragMask.hide();
        }
    });

};

var centerPosition = function (el) {
    var uiUtils = baidu.editor.ui.uiUtils;
    var vpRect = uiUtils.getViewportRect();
    var rect = uiUtils.getClientRect(el);
    var left = vpRect.width / 2 - rect.width / 2;
    var top = vpRect.height / 2 - rect.height / 2;

    el.style.left = Math.max(left, 0) + 'px';
    el.style.top = Math.max(top, 0) + 'px';
};


